<?php
define('IN_WONDERSHARE', true);
header("Content-type:text/html;charset=utf-8");
ob_start("ob_gzhandler");
require('../inc/global.php');

## 作为进程关键字
define('INOTIFY','/usr/local/inotify-tools/bin/inotifywait -drq -e create,move,delete,modify,attrib --timefmt %Y-%m-%d %H:%M:%S --format %T %w%f %e');

## 记录脚本的所在路径
define('RECORD_SH','/usr/local/inotify-tools/record.sh');

## 检查进程的脚本的路径
define('CHECK_SH','/usr/local/inotify-tools/check_exesit.sh');

## 杀死进程的脚本的路径
define('KILL_RECORD_SH','/usr/local/inotify-tools/kill_record.sh');

## 记录进程如果没有正常关闭而一直在运行, 则根据此超时时间来另作处理, 单位秒
define('RECORD_TIMEOUT','3600');

function check_exesit($domain,$document_root,$list_save_dir,$list_file,$user,$do_record_dir){

	$sh=INOTIFY.' '.$document_root;
	exec(CHECK_SH.' '.$sh,$output,$return);
	if($return==0){
		foreach ($output as $content) {
			$msg=$msg.$content."<br>";
		}
		$result["bool"]=1;
		$result["msg"]=$msg;
	}else if($return==2){
		$tmp=file($do_record_dir."/do_record.txt");
		## 有相同进程的情况下就去查日志,看是谁在操作
		if(!is_file($do_record_dir."/do_record.txt") || empty($tmp)){
			touch($do_record_dir."/do_record.txt");
			$sh=INOTIFY.' '.$document_root;
                        exec(KILL_RECORD_SH." $sh",$output,$return);
			$result['bool']=1;
			$result['msg']="do_record.txt被删除, 发现此站点存在记录进程, 现已被关闭.<br>";
		}
		$logs=file($do_record_dir."/do_record.txt");//导入操作记录到数组
		$tmp_flag1=0;	
		$tmp_flag2=0;	
		foreach($logs as $log){//先把日志导入两个二维数组
			list($log_act,$log_datetime,$log_user,$log_domain,$log_doc_root,$log_pid,$log_list_save_dir,$log_list_file)=explode(":",$log);
			if($log_act=='start'){//按照start和stop操作的分类
				$log_start_arr[$tmp_flag1]['action']=$log_act;
				$log_start_arr[$tmp_flag1]['datetime']=$log_datetime;
				$log_start_arr[$tmp_flag1]['user']=$log_user;
				$log_start_arr[$tmp_flag1]['domain']=$log_domain;
				$log_start_arr[$tmp_flag1]['document_root']=$log_doc_root;
				$log_start_arr[$tmp_flag1]['pid']=$log_pid;
				$log_start_arr[$tmp_flag1]['list_save_dir']=$log_list_save_dir;
				$log_start_arr[$tmp_flag1]['list_file']=$log_list_file;
				$tmp_flag1++;
			}
			if($log_act=='stop'){
				$log_stop_arr[$tmp_flag2]['action']=$log_act;
				$log_stop_arr[$tmp_flag2]['datetime']=$log_datetime;
				$log_stop_arr[$tmp_flag2]['user']=$log_user;
				$log_stop_arr[$tmp_flag2]['domain']=$log_domain;
				$log_stop_arr[$tmp_flag2]['document_root']=$log_doc_root;
				$log_stop_arr[$tmp_flag2]['pid']=$log_pid;
				$log_stop_arr[$tmp_flag2]['list_save_dir']=$log_list_save_dir;
				$log_stop_arr[$tmp_flag2]['list_file']=$log_list_file;
				$tmp_flag2++;
			}
		}
		for($i=0;$i<count($log_start_arr);$i++){
			$found=false;
			for($j=0;$j<count($log_stop_arr);$j++){
				if($log_start_arr[$i]['domain']==$log_stop_arr[$j]['domain']&&
					$log_start_arr[$i]['document_root']==$log_stop_arr[$j]['document_root']&&
					$log_start_arr[$i]['pid']==$log_stop_arr[$j]['pid']&&
					$log_start_arr[$i]['list_save_dir']==$log_stop_arr[$j]['list_save_dir']&&
					$log_start_arr[$i]['list_file']==$log_stop_arr[$j]['list_file']){
					$found=true;
					break;	
				}
			}
			if($found === false){
				$miss_start[$i]=$log_start_arr[$i];
			}
		}
		
			
		$result['bool']=1;
		foreach($miss_start as $one){
			$full_time=date("Y-m-d H:i:s",$one['datetime']);
			if(trim($one['user'])!==trim($user) && 
			trim($one['domain'])==trim($domain)){
				$msg="[检查记录] 已检查到".$one['user']."在".$full_time."对".$one['domain']."域名进行FTP操作未结束";
				$result["msg"]=$msg;
				$result['bool']=0;
				break;
			}elseif(trim($one['user'])==trim($user) && 
			trim($one['domain'])==trim($domain) && 
			trim($one['document_root'])==trim($document_root) && 
			trim($one['list_save_dir'])==trim($list_save_dir) && 
			trim($one['list_file'])==trim($list_file)){
				$sh=INOTIFY.' '.$document_root;
				exec(KILL_RECORD_SH." $sh",$output,$return);
				foreach ($output as $content) {
					$msg=$msg.$content."<br>";
				}
				#获取进程PID
				$pid_tmp=preg_split("/\{/",$msg);
				$pid_tmp=preg_split("/\}/",$pid_tmp[1]);
				$pid=trim($pid_tmp[0]);
				#时间格式转换
				$full_time=date("Y-m-d H:i:s",$one['datetime']);
				#将动作记录到文本
				if(!$do_record_handle=fopen($do_record_dir."/do_record.txt",'a+')){
					$msg=$msg."[动作记录] 警告:无法打开文件\"$do_record_dir/do_record.txt\"<br>";
					$result['bool']=0;
					return $result;
					exit;
				}else{
					$actiontime=mktime();
					#log="action:actiontime:user:domain:document_root:pid:file_save_dir:file_name"
					$log="stop:$actiontime:$user:$domain:$document_root:$pid:$list_save_dir:$list_file\n";
					if(fwrite($do_record_handle,$log)===FALSE){
						$msg=$msg."[动作记录] 警告:无法写入文件\"$do_record_dir/do_record.txt\"<br>";
					}
					fclose($do_record_handle);
					$result['bool']=1;
				}
				$msg=$msg."[检查记录] 检查到您在".$full_time."对".$one['domain']."域名开启的记录进程未正常关闭.现已强制关闭.记录未保存.<br>";
				$result["msg"]=$msg;
			}
			
		}
	
		#foreach($miss_start as $one){
		#	if(trim($one['user'])==trim($user) && 
		#	trim($one['domain'])==trim($domain) && 
		#	trim($one['document_root'])==trim($document_root) && 
		#	trim($one['list_save_dir'])==trim($list_save_dir) && 
		#	trim($one['list_file'])==trim($list_file)){

		#		$sh=INOTIFY.' '.$document_root;
		#		exec(KILL_RECORD_SH." $sh",$output,$return);
		#		foreach ($output as $content) {
		#			$msg=$msg.$content."<br>";
		#		}
		#		#获取进程PID
		#		$pid_tmp=preg_split("/\{/",$msg);
		#		$pid_tmp=preg_split("/\}/",$pid_tmp[1]);
		#		$pid=trim($pid_tmp[0]);
		#		#时间格式转换
		#		$full_time=date("Y-m-d H:i:s",$one['datetime']);
		#		#将动作记录到文本
		#		if(!$do_record_handle=fopen($list_save_dir."/do_record.txt",'a+')){
		#			$msg=$msg."[动作记录] 警告:无法打开文件\"$list_save_dir/do_record.txt\"<br>";
		#			$result['bool']=0;
		#			return $result;
		#			exit;
		#		}else{
		#			$actiontime=mktime();
		#			#log="action:actiontime:user:domain:document_root:pid:file_save_dir:file_name"
		#			$log="stop:$actiontime:$user:$domain:$document_root:$pid:$list_save_dir:$list_file\n";
		#			if(fwrite($do_record_handle,$log)===FALSE){
		#				$msg=$msg."[动作记录] 警告:无法写入文件\"$list_save_dir/do_record.txt\"<br>";
		#			}
		#			fclose($do_record_handle);
		#			$result['bool']=1;
		#		}
		#		$msg=$msg."[检查记录] 检查到您在".$full_time."对".$one['domain']."域名开启的记录进程未正常关闭.现已强制关闭.记录未保存.<br>";
		#		$result["msg"]=$msg;
		#	}else{
		#		$msg=$msg."[检查记录] 检查到".$one['user']."用户在".$full_time."对".$one['domain']."域名的记录进程未终止. 无法对同个域名启用多个进程.请与对方联系.<br>";
		#		$result["msg"]=$msg;
		#		$result['bool']= 0 ;
		#	}
		#	$result["msg"]=$msg;
		#	break;
		#}	
	
	}else{
		$msg=$msg."[检查进程] 警告:文件上传检测程序运行失败,请与 <万杰,林霖> 联系. 并将此消息截图. 错误信息如下:<br>";
		foreach ($output as $content) {
			$msg=$msg.$content."<br>";
		}
		$result["bool"]=0;
	}
	$result["msg"]=$msg;
	return $result;
}

function do_record($domain,$document_root,$list_save_dir,$list_file,$user,$do_record_dir){
	$list_dst=$list_save_dir.'/'.$list_file;
	exec(RECORD_SH." $document_root $list_dst",$output,$return);
	if($return==0){
		$msg=$msg."[记录进程] 文件上传记录进程成功运行.<br>";
		$msg=$msg."[温馨提示] 同一目录同时只能运行一个记录进程,上传完毕后请尽快进行停止记录操作.<br>";
		foreach ($output as $content) {
			$msg=$msg.$content."<br>";
		}
		
		#获取进程PID
		$pid_tmp=preg_split("/\{/",$msg);
		$pid_tmp=preg_split("/\}/",$pid_tmp[1]);
		$pid=$pid_tmp[0];
		if(is_numeric($pid)){
			#将动作记录到文本
			if(!$do_record_handle=fopen($do_record_dir."/do_record.txt",'a+')){
				$msg=$msg."[动作记录] 警告:无法打开文件\"$do_record_dir/do_record.txt\"<br>";
				$result['bool']=0;
				$result['msg']=$msg;
				return $result;
				exit;

			}else{
				$actiontime=mktime();
				#log="action:actiontime:user:domain:document_root:pid:file_save_dir:file_name"
				$log="start:$actiontime:$user:$domain:$document_root:$pid:$list_save_dir:$list_file\n";
				if(fwrite($do_record_handle,$log)===FALSE){
					$msg=$msg."[动作记录] 警告:无法写入文件\"$do_record_dir/do_record.txt\"<br>";
				}
				fclose($do_record_handle);
				$result['bool']=1;
			}
		}else{
			$msg=$msg."[动作记录] 进程PID获取失败";
			$result["bool"]=0;
		}


	}else{
		$msg=$msg."[记录进程] 文件上传记录进程启动失败,请与 <万杰,袁土安> 联系,并将此消息截图.";
		$msg=$msg."[错误提示] 错误信息如下:<br>";
		foreach ($output as $content) {
			$msg=$msg.$content."<br>";
		}
		$result["bool"]=0;
		$result["msg"]=$msg;
	}
	return $result;
}

function check_exesit_stop($domain,$document_root,$list_save_dir,$list_file,$user,$do_record_dir){
	$sh=INOTIFY.' '.$document_root;
	exec(CHECK_SH.' '.$sh,$output,$return);
	if($return==0){//如果没找到进程
		foreach ($output as $content) {
			$msg=$msg.$content."<br>";
		}
		$result["bool"]=1;
		$result["msg"]=$msg;
	}else if($return==2){//如果找到了进程
		## 有相同进程的情况下就去查日志,看是谁在操作
		$logs=file($do_record_dir."/do_record.txt");//导入操作记录到数组
		$tmp_flag1=0;	
		$tmp_flag2=0;	
		foreach($logs as $log){//先把日志导入两个二维数组
			list($log_act,$log_datetime,$log_user,$log_domain,$log_doc_root,$log_pid,$log_list_save_dir,$log_list_file)=explode(":",$log);
			if($log_act=='start'){//按照start和stop操作的分类
				$log_start_arr[$tmp_flag1]['action']=$log_act;
				$log_start_arr[$tmp_flag1]['datetime']=$log_datetime;
				$log_start_arr[$tmp_flag1]['user']=$log_user;
				$log_start_arr[$tmp_flag1]['domain']=$log_domain;
				$log_start_arr[$tmp_flag1]['document_root']=$log_doc_root;
				$log_start_arr[$tmp_flag1]['pid']=$log_pid;
				$log_start_arr[$tmp_flag1]['list_save_dir']=$log_list_save_dir;
				$log_start_arr[$tmp_flag1]['list_file']=$log_list_file;
				$tmp_flag1++;
			}
			if($log_act=='stop'){
				$log_stop_arr[$tmp_flag2]['action']=$log_act;
				$log_stop_arr[$tmp_flag2]['datetime']=$log_datetime;
				$log_stop_arr[$tmp_flag2]['user']=$log_user;
				$log_stop_arr[$tmp_flag2]['domain']=$log_domain;
				$log_stop_arr[$tmp_flag2]['document_root']=$log_doc_root;
				$log_stop_arr[$tmp_flag2]['pid']=$log_pid;
				$log_stop_arr[$tmp_flag2]['list_save_dir']=$log_list_save_dir;
				$log_stop_arr[$tmp_flag2]['list_file']=$log_list_file;
				$tmp_flag2++;
			}
		}
		for($i=0;$i<count($log_start_arr);$i++){
			$found=false;
			for($j=0;$j<count($log_stop_arr);$j++){
				if($log_start_arr[$i]['domain']==$log_stop_arr[$j]['domain']&&
					$log_start_arr[$i]['document_root']==$log_stop_arr[$j]['document_root']&&
					$log_start_arr[$i]['pid']==$log_stop_arr[$j]['pid']&&
					$log_start_arr[$i]['list_save_dir']==$log_stop_arr[$j]['list_save_dir']&&
					$log_start_arr[$i]['list_file']==$log_stop_arr[$j]['list_file']){
					$found=true;
					break;	
				}
			}
			if($found === false){
				$miss_start[$i]=$log_start_arr[$i];
			}
		}
		
		$result['bool']=1;
		foreach($miss_start as $one){
			$full_time=date("Y-m-d H:i:s",$one['datetime']);
			if(trim($one['user'])!==trim($user) && 
			trim($one['domain'])==trim($domain)){
				$msg="[检查记录] 已检查到".$one['user']."在".$full_time."对".$one['domain']."域名进行FTP操作未结束";
				$result["msg"]=$msg;
				$result['bool']=0;
				break;
			}
		}	
		
		#foreach($miss_start as $one){
		#	$full_time=date("Y-m-d H:i:s",$one['datetime']);
		#	if(trim($one['user'])==trim($user) && 
		#	trim($one['domain'])==trim($domain) && 
		#	trim($one['document_root'])==trim($document_root) && 
		#	trim($one['list_save_dir'])==trim($list_save_dir) && 
		#	trim($one['list_file'])==trim($list_file)){
		#	$msg="[检查记录] 已检查到您在".$full_time."对".$one['domain']."域名进行FTP操作";
		#	$result["msg"]=$msg;
		#	$result['bool']=1;
		#	}else{
		#		$msg=$msg."[检查记录] 检查到".$one['user']."用户在".$full_time."对".$one['domain']."域名的记录进程未终止. 无法对同个域名启用多个进程.请与对方联系.<br>";
		#		$result["msg"]=$msg;
		#		$result['bool']=0;
		#	}
		#	$result["msg"]=$msg;
		#	break;
		#}	
	
	}else{
		$msg=$msg."[检查进程] 警告:文件上传检测程序运行失败,请与 <万杰> 联系. 并将此消息截图. 错误信息如下:<br>";
		foreach ($output as $content) {
			$msg=$msg.$content."<br>";
		}
		$result["bool"]=0;
	}
	$result["msg"]=$msg;
	return $result;
}

function stop_record($domain,$document_root,$list_save_dir,$list_file,$user,$do_record_dir){

	$sh=INOTIFY.' '.$document_root;
	exec(KILL_RECORD_SH." $sh",$output,$return);


	if($return==0){
		foreach ($output as $content) {
			$msg=$msg.$content."<br>";
		}
		#获取进程PID
		$pid_tmp=preg_split("/\{/",$msg);
		$pid_tmp=preg_split("/\}/",$pid_tmp[1]);
		$pid=trim($pid_tmp[0]);
		if(is_numeric($pid)){
			#将动作记录到文本
			if(!$stop_record_handle=fopen($do_record_dir."/do_record.txt",'a+')){
				$msg=$msg."[动作记录] 警告:无法打开文件\"$do_record_dir/do_record.txt\"<br>";
				$result['bool']=0;
				$result['msg']=$msg;
				return $result;
				exit;

			}else{
				$actiontime=mktime();
				#log="action:actiontime:user:domain:document_root:pid:file_save_dir:file_name"
				$log="stop:$actiontime:$user:$domain:$document_root:$pid:$list_save_dir:$list_file\n";
				if(fwrite($stop_record_handle,$log)===FALSE){
					$msg=$msg."[动作记录] 警告:无法写入文件\"$do_record_dir/do_record.txt\"<br>";
				}
				fclose($stop_record_handle);
				$result['bool']=1;
			}
		}else{
			$msg=$msg."[动作记录] 进程PID获取失败";
			$result["bool"]=0;
		}
		$result["msg"]=$msg;
	}else if($return==2){
		$msg="[关闭进程] 警告:关闭记录进程失败,未检测到此进程.<br>";
		foreach ($output as $content) {
			$msg=$msg.$content."<br>";
		}
		$result["bool"]=0;
		$result["msg"]=$msg;
	}else{
		$msg="[关闭进程] 警告:关闭记录进程运行失败,请与 <万杰,林霖> 联系. 并将此消息截图. 错误信息如下:<br>";
		foreach ($output as $content) {
			$msg=$msg.$content."<br>";
		}
		$result["bool"]=0;
		$result["msg"]=$msg;
	}
	return $result;
}


function save_record($domain,$document_root,$list_save_dir,$list_file , $user, $file_array,$do_record_dir){
	
	#初始化返回值
	$result['bool']=1;

	#按行读取文件
	if(is_readable($list_save_dir.'/'.$list_file)){
		$lines=file($list_save_dir.'/'.$list_file);
	}else{
		$msg=$msg."[排序过程] 警告:无法读取原始记录文件$list_save_dir/$list_file ,请检查文件是否存在或是否有权限读取文件.<br>";
		$result['bool']=0;
		$result['msg']=$msg;
		return $result;
		exit;
	}
	#把每个字段读入一个二维数组
	if(count($lines)>=1){
	#############################	
		for($i=0;$i<count($lines);$i++){
			//echo "debug:anlys:".$lines[$i]."<br>";
			list($date,$time,$file,$action)=explode(' ',$lines[$i]);
			$file=$file;
			$datetime="$date $time";
			$Y=substr($datetime, 0,4);
			$M=substr($datetime, 5,2);
			$D=substr($datetime, 8,2);
			$h=substr($datetime, 11,2);
			$m=substr($datetime, 14,2);
			$s=substr($datetime, 17,2);
			$datetime=mktime($h,$m,$s,$M,$D,$Y);
			if(preg_match("/DELETE|MOVED_FROM/",$action) ){	
				if (!preg_match("/,ISDIR/",$action)) {
					//$action = "D";
					$key = -1;
					$key=array_search($file,$create_file);
					if($key>-1){
						if($datetime < $create_time[$key]){
							//throw Exception;
							echo "exception1: ".$datetime."< ".$create_time[$key]." ".$file."<br>";
						}else{
							unset($create_file[$key]);
							unset($create_time[$key]);
						}
					}else{
						$delete_file[]=$file;
						$delete_time[]=$datetime;
					}
				}

			}else{
				//$action = "C";
				if (!preg_match("/,ISDIR/",$action)) {
					$key = -1;
					$key=array_search($file,$create_file);
					if($key>-1)
					{
						$create_time[$key] =$datetime; //update array:c_t	
					}else{
						$key=-1;
						$key=array_search($file,$delete_file);
						if($key>-1){
							if($delete_time[$key]> $datetime){
							echo "exception2: ".$datetime."> ".$delete_time[$key]." ".$file."<br>";
							}else{
								//remove  delete array
								unset($delete_file[$key]);
								unset($delete_time[$key]);
								//add create array
								$create_time[]=$datetime;
								$create_file[]=$file;
							}
						}else{
							//add create array
							$create_time[]=$datetime;
							$create_file[]=$file;
						}
					}
				}
			}
		
		}// end of 'for'
	#############################	
	}else{
		$result['bool']=0;
		$msg=$msg."[排序过程] 警告:原始记录文件为空,请确认是否有过文件上传或更新.<br>";
		$result['bool']=0;
		$result['msg']=$msg;
		return $result;
		exit;
	}
	

	#定义文件保存的文件名

	$modify_file_list= $file_array['mEditFile'];
	$delete_file_list= $file_array['mDeleteFile'];
	$cdn_refresh_url_list= $file_array['mCdnEditFile'];
	$cdn_remove_url_list= $file_array['mCdnDeleteFile'];

	$result['file_list_modify']=$modify_file_list;
	$result['file_list_delete']=$delete_file_list;
	$result['url_list_refresh']=$cdn_refresh_url_list;
	$result['url_list_remove']=$cdn_remove_url_list;

	#写入修改过或新上传操作的列表文件
	if(count($create_file)>=1){
		if(!$modify_handle=fopen($modify_file_list,'w+')){
			$msg=$msg."[保存排序] 警告:无法打开文件\"$modify_file_list<br>\"";
			$result['bool']=0;
			$result['msg']=$msg;
			return $result;
			exit;

		}else{
			foreach($create_file as $one){
				if(fwrite($modify_handle,$one."\n")===FALSE){
					$msg=$msg."[保存排序] 警告:无法写入文件\"$modify_file_list<br>\"";
				}
			}
			fclose($modify_handle);

		}
	}else{
		$msg=$msg."[保存排序] 警告:没有检测到文件被上传或修改!<br>";
	}
	
	#写入删除文件操作的列表文件
	if(count($delete_file)>=1){
		if(!$delete_handle=fopen($delete_file_list,'w+')){
			$msg=$msg."[保存排序] 警告:无法打开文件\"$delete_file_list<br>\"";
			$result['bool']=0;
			$result['msg']=$msg;
			return $result;
			exit;
		}else{
			foreach($delete_file as $one){
				if(fwrite($delete_handle,$one."\n")===FALSE){
					$msg=$msg."[保存排序] 警告:无法写入文件\"$delete_file_list<br>\"";
				}
			}
			fclose($delete_handle);
		}
	}
	#写入CDN URL刷新列表, 根据修改或上传操作文件列表生成
	if(count($create_file)>=1){
		if(!$url_handle=fopen($cdn_refresh_url_list,'w+')){
			$msg=$msg."[保存排序] 警告:无法打开文件\"$cdn_refresh_url_list<br>\"";
			$result['bool']=0;
			$result['msg']=$msg;
			return $result;
			exit;
		}else{
			foreach($create_file as $one){
				$one=str_replace($document_root,$domain,$one);
				if($one == null) 	continue ;
				$one='http://'.$one."\n";
				if(preg_match("/.(php|jsp|asp|aspx)$/",$one)!==0){
					continue;
				}
				if(fwrite($url_handle,$one)===FALSE){
					$msg=$msg."[保存排序] 警告:无法写入文件\"$cdn_refresh_url_list<br>\"";
				}
			}
			fclose($url_handle);
		}
	}	

	#写入CDN URL移除列表, 根据修改或上传操作文件列表生成
	if(count($delete_file)>=1){
		if(!$url_handle=fopen($cdn_remove_url_list,'w+')){
			$msg=$msg."[保存排序] 警告:无法打开文件\"$cdn_remove_url_list<br>\"";
			$result['bool']=0;
			$result['msg']=$msg;
			return $result;
			exit;
		}else{
			foreach($delete_file as $one){
				$one=str_replace($document_root,$domain,$one);
				$one='http://'.$one."\n";
				if(preg_match("/.(php|jsp|asp|aspx)$/",$one)!==0){
					continue;
				}
				if(fwrite($url_handle,$one)===FALSE){
					$msg=$msg."[保存排序] 警告:无法写入文件\"$cdn_remove_url_list<br>\"";
				}
			}
			fclose($url_handle);
		}
	}
	
	

	return $result;
}

//获取用户相应的站点任务信息（未测试）
function getUserSiteTaskInfo($sId = 0, $force_stop = false) {
	
	$task_array = $file_array = array();
	if ( !empty($sId) ) {
		
		$stateSql = $force_stop ? '' : 'AND m.mState=0 ';
		$sql = "SELECT 
				m.mId,
				m.mEditFile,
				m.mDeleteFile,
				m.mCdnEditFile,
				m.mCdnDeleteFile,
				s.sDomainName,
				s.sDirPath
				FROM task_manage m, task_site s
				WHERE m.sId = s.sId AND m.mCreatAid = {$_SESSION['AID']} AND m.sId = {$sId} 
				{$stateSql} AND m.mIsFtp = 1 AND m.mIsDelete = 0";

		$row = $GLOBALS['db']->getOneRs($sql);
		
		if ( !empty($row) ) {
			$task_array['domain'] =  $row['sDomainName'];
			$task_array['document_root'] =  $row['sDirPath'];
			$task_array['list_file'] =  str_replace('_editUrls', '', basename($row['mCdnEditFile']));
			$task_array['list_save_dir'] =  dirname($row['mCdnEditFile']) ;
			$task_array['do_record_dir'] =  IMG_ROOT."/pub_cms/ftp";
			$task_array['user'] =  $_SESSION['AName'];
			
			$file_array['mEditFile'] = $row['mEditFile'];
			$file_array['mDeleteFile'] = $row['mDeleteFile'];
			$file_array['mCdnEditFile'] = $row['mCdnEditFile'];
			$file_array['mCdnDeleteFile'] = $row['mCdnDeleteFile'];
		}
	}
	
	if ( empty($task_array) ) {
					
		echo "FTP开启失败，你木有该网站的任务或 未测试任务，请检查你的任务！";
		exit;
	}
	return array('task_array' => $task_array, 'file_array' => $file_array);
	
}


$sId =  (int)$_POST['sId'];
switch ($_POST['act'] ) {
	
	case 'start':
		
	  	if ( empty($_SESSION['sId']) ) {
	  		
	  		$arr = getUserSiteTaskInfo($sId);

	  		$task_array = $arr['task_array'];

			$chk_result=check_exesit($task_array['domain'], $task_array['document_root'], $task_array['list_save_dir'], 
								$task_array['list_file'], $task_array['user'],$task_array['do_record_dir']);
			if($chk_result["bool"]==1){
				$do_result=do_record($task_array['domain'], $task_array['document_root'], $task_array['list_save_dir'], 
									$task_array['list_file'], $task_array['user'],$task_array['do_record_dir']);
				if($do_result['bool']==1){
					$allmsg="[记录上传] 操作成功!<br>";
				}else{
					$allmsg="[记录上传] 操作失败!<br>";
				}
			}else{
				$allmsg=$allmsg."[预先检查] 操作失败!<br>";
				//echo "chk bool is ".$chk_result['bool']."<br>";
				//echo "chk msg is ".$chk_result['msg']."<br>";
			}
			$allmsg=$allmsg.$chk_result["msg"].$do_result["msg"];
			echo $allmsg;
			
			$_SESSION['sId'] = $sId;
			unset($task_array, $arr);
			
	  	}
		break;
		
	case 'force_stop':
		$force_stop = true;
		
	case 'stop':
		
		if ( !empty($_SESSION['sId']) ) {
			

			$arr = getUserSiteTaskInfo($sId, $force_stop);
			
			//print_r($arr);
			$task_array = $arr['task_array'];
			$check_result=check_exesit_stop($task_array['domain'], $task_array['document_root'], $task_array['list_save_dir'],
									 $task_array['list_file'] , $task_array['user'],$task_array['do_record_dir']);
			if($check_result['bool']==1){
				$stop_result=stop_record($task_array['domain'], $task_array['document_root'], $task_array['list_save_dir'],
										 $task_array['list_file'] , $task_array['user'],$task_array['do_record_dir']);
				if($stop_result["bool"]==1){
					$save_result=save_record($task_array['domain'], $task_array['document_root'], $task_array['list_save_dir'], 
											$task_array['list_file'] , $task_array['user'], $arr['file_array'],$task_array['do_record_dir']);
					if($save_result['bool']==1){
						$allmsg="[保存文件] 操作成功!<br>".$save_result['msg'];
					}else{
						
						$allmsg="[保存文件] 操作失败!<br>".$save_result['msg'];
					}
					$allmsg=$allmsg."[停止进程] 操作成功!<br>".$stop_result["msg"];
				}else{
					$allmsg=$allmsg."[停止进程] 操作失败!<br>".$stop_result["msg"];
				}
			}else{
				$allmsg=$allmsg."[停止进程] 操作失败，您未启用FTP上传记录进程。<br>";
				//echo "bool is ".$check_result['bool']."<br>";
				//echo "msg is ".$check_result['msg']."<br>";
			}
			echo $allmsg;
			unset($_SESSION['sId'], $task_array, $arr);
		}
		break;
}

$site_option = getSiteInfo($sId, true );//站点下拉框


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="/wondershare/js/jquery.js"></script>
<script src="/wondershare/js/task.js"></script> 
</head>

<body>
<form name="open_from" method="POST" onsubmit="return openFtp();">
	 <select name="sId"  id="open_sId" <?php if ($_SESSION['sId']) { ?> disabled="disabled"  <?php }?> >
      <?php echo $site_option;?>
      </select><br></br>
	<input type="hidden" name="act"  value="start" />
	<input type="submit"   class="button" value="开启FTP " name="open_ftp" id='open_ftp' 
	<?php if ($_SESSION['sId']) { ?> disabled="disabled"  <?php }?> />
</form>

<form name="stop_from" method="POST" >
	<input type="hidden" name="act"  value="stop" />
	<input type="hidden" name="sId"  id="stop_sId" value="<?php echo $_SESSION['sId'];?>" />
	<input type="submit"   class="button" value="关闭FTP " name="closed_ftp"  
	<?php if ( empty($_SESSION['sId']) ) { ?> disabled="disabled"  <?php }?> />
</form>

<form name="force_stop_from" method="POST" >
	<input type="hidden" name="act"   value="force_stop" />
	<input type="hidden" name="sId"  id="force_stop_sId" value="<?php echo $_SESSION['sId'];?>" />
	<input type="submit"   class="button" value="强制关闭FTP " name="force_closed_ftp"  
	<?php if ( empty($_SESSION['sId']) ) { ?> disabled="disabled"  <?php }?> />
</form>

<p style="color:#F00; margin-top:20px;" > 
FTP上传需知： <br>
一个用户只能同时对一个网站进行FTP上传。<br>
先开启FTP,再进行FTP上传，否则FTP上传的文件将无效。<br>
在上传的同时不能关闭此页面,上传完请点击关闭FTP否则FTP上传的文件将无效。</p>

</body>
<script>
//检查是否有任务
function openFtp() {
	
	var sId = $("#open_sId").val();
	var fage =  getTaskFileInfo(sId, 1);
	$("#stop_sId").val(sId);
	$("#force_stop_sId").val(sId);
	
	return fage;
	
}

</script>
</html>
